home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / u_man / cat3 / Tcl / glxaux.z / glxaux
Text File  |  1998-10-30  |  10KB  |  199 lines

  1.  
  2.  
  3.  
  4. GGGGLLLLXXXXAAAAUUUUXXXX((((3333TTTTkkkk))))                                                        GGGGLLLLXXXXAAAAUUUUXXXX((((3333TTTTkkkk))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      GLXAux - an extension to Tcl/Tk which allows IrisGL rendering
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      cc -o your_wish yourAppInit.o ... -ltkGLXAux -ltkGLX -ltk -ltcl -lgl_s
  13.      -lXext -lX11_s -lm
  14.  
  15.      and, yourAppInit.c should contain:
  16.  
  17.      TkGLX_Init(interp, Tk_MainWindow(interp));
  18.  
  19.      if (TkGLXAux_Init(interp) == TCL_ERROR) {
  20.          return TCL_ERROR;
  21.      }
  22.  
  23.  
  24. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  25.      _G_L_X_A_u_x is a companion extension to _g_l_x_w_i_n, by Michael Halle
  26.      <mhalle@media.mit.edu>.  _g_l_x_w_i_n provides a Tk widget which can be used as
  27.      a target of GL rendering.  However, often many simple GL tasks would be
  28.      easier if they had Tcl bindings.  _G_L_X_A_u_x provides these bindings - a
  29.      comprehensive set of Tcl bindings to IrisGL (GL 4.0).  Version 1.0 of
  30.      _G_L_X_A_u_x supports pretty much everything except lighting and textures.  See
  31.      the CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS NNNNOOOOTTTT SSSSUUUUPPPPPPPPOOOORRRRTTTTEEEEDDDD section for more details.
  32.  
  33.      For most GL commands, the equivalent Tcl command will be the same text,
  34.      except prefixed with _g_l:.  So, ccccppppaaaacccckkkk((((3333GGGG)))) would be accessed by running
  35.      _g_l:_c_p_a_c_k.
  36.  
  37.  
  38. SSSSYYYYNNNNTTTTAAAAXXXX
  39.      Most _G_L_X_A_u_x commands take exactly the same arguments as their C
  40.      counterparts.  Some take _g_r_o_u_p_s of arguments, such as _g_l:_c_i_r_c, which
  41.      draws a circle.  Both of the following commands are equivalent:
  42.  
  43.                gl:circ {10 10} 20
  44.  
  45.                gl:circ 10 10 20
  46.  
  47.      When a GL command occurs in many forms, such as the _v_e_r_t_e_x command (_v_2_i,
  48.      _v_2_f, _v_2_d, _v_3_i, _v_3_f, _v_3_d, ...), these have been collapsed into one Tcl
  49.      command (in this case, _g_l:_v) which takes a variable number of arguments.
  50.  
  51.      When a GL command takes an _A_n_g_l_e argument, which for C programmers is an
  52.      integer in tenths of degrees, the Tcl programmer has a choice of degrees,
  53.      tenths of degrees, or radians.  The current interpretation of an angle is
  54.      set with the _g_l:_a_n_g_l_e_m_o_d_e command.  By default, angles are read as
  55.      degrees.
  56.  
  57.      When a GL command would normally return multiple values to addressed
  58.      passed to it, such as _g_R_G_B_c_o_l_o_r(_3_G), these results are returned together
  59.      as a Tcl list.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. GGGGLLLLXXXXAAAAUUUUXXXX((((3333TTTTkkkk))))                                                        GGGGLLLLXXXXAAAAUUUUXXXX((((3333TTTTkkkk))))
  71.  
  72.  
  73.  
  74.      When a GL command would normally take a boolean value, such as
  75.      _b_a_c_k_b_u_f_f_e_r(_3_G), the Tcl programmer may use numbers (1 or 0) as well as
  76.      strings (if it begins with ffff, FFFF, or 0000, it's considered to be _f_a_l_s_e,
  77.      otherwise, it's _t_r_u_e).
  78.  
  79.      When a GL command would normally take a Matrix, such as _l_o_a_d_m_a_t_r_i_x(_3_G),
  80.      the Tcl programmer may pass a list of lists, each containing four
  81.      numbers.  This must be in row-major order.
  82.  
  83.      When a GL command would normally take one of a specific number of
  84.      predefined arguments, such as _a_f_u_n_c_t_i_o_n(_3_G), which, in C, may be passed
  85.      either _A_F__N_O_T_E_Q_U_A_L or _A_F__A_L_W_A_Y_S, the Tcl programmer is restricted to use
  86.      some lower-case cleaned-up versions of these strings, in this case,
  87.      _n_o_t_e_q_u_a_l or _a_l_w_a_y_s.  Other strings will generate an error.
  88.  
  89.  
  90. CCCCOOOONNNNVVVVEEEENNNNIIIIEEEENNNNCCCCEEEESSSS
  91.      The Tcl variable _g_l:_i_d_e_n_t_i_t_y contains an identity matrix suitable for
  92.      passing to functions like _g_l:_l_o_a_d_m_a_t_r_i_x.
  93.  
  94.      The Tcl variable _g_l_x_a_u_x:_v_e_r_s_i_o_n contains the version number of the GLXAux
  95.      library (currently 1.0).
  96.  
  97.      The Tcl command _g_l:_v_i_e_w provides a higher-level abstraction for a typical
  98.      walk-through application.  _g_l:_v_i_e_w works like most Tk commands, i.e.,
  99.      _g_l:_v_i_e_w _v_i_e_w_1 will create a new command, _v_i_e_w_1 which can then be
  100.      manipulated directly.
  101.  
  102.  
  103.      Usage:  gl:view _v_i_e_w-_n_a_m_e ?_c_o_n_f_i_g_u_r_a_t_i_o_n-_p_a_r_a_m_e_t_e_r_s?
  104.              _v_i_e_w-_n_a_m_e ggggeeeetttt - returns the matrix corresponding to the current
  105.              viewing parameters.
  106.              _v_i_e_w-_n_a_m_e llllooooaaaadddd - performs a GL _l_o_a_d_m_a_t_r_i_x() of the matrix
  107.              corresponding to the current viewing parameters.
  108.              _v_i_e_w-_n_a_m_e ttttuuuurrrrnnnn____rrrriiiigggghhhhtttt _a_n_g_l_e - turns the viewer's head right, in
  109.              the viewer's coordinate system.  The units for _a_n_g_l_e are
  110.              determined by the last call to _g_l:_a_n_g_l_e_m_o_d_e.
  111.              _v_i_e_w-_n_a_m_e ttttuuuurrrrnnnn____uuuupppp _a_n_g_l_e - turns the viewer's up right, in the
  112.              viewer's coordinate system.  The units for _a_n_g_l_e are determined
  113.              by the last call to _g_l:_a_n_g_l_e_m_o_d_e.
  114.              _v_i_e_w-_n_a_m_e wwwwaaaallllkkkk____ffffoooorrrrwwwwaaaarrrrdddd _d_i_s_t_a_n_c_e - moves the viewer forward, in
  115.              the viewer's coordinate system.
  116.              _v_i_e_w-_n_a_m_e wwwwaaaallllkkkk____uuuupppp _d_i_s_t_a_n_c_e - moves the viewer up, in the viewer's
  117.              coordinate system.
  118.              _v_i_e_w-_n_a_m_e wwwwaaaallllkkkk____rrrriiiigggghhhhtttt _d_i_s_t_a_n_c_e - moves the viewer right, in the
  119.              viewer's coordinate system.
  120.              _v_i_e_w-_n_a_m_e ccccoooonnnnffffiiiigggguuuurrrreeee ?_c_o_n_f_i_g_u_r_a_t_i_o_n-_p_a_r_a_m_e_t_e_r_s?
  121.  
  122.      Configurable options:
  123.              (if no options are passed, the current configuration is returned)
  124.              -_p_o_s_i_t_i_o_n {_x _y _z} - sets the viewer's position (VRP) to {_x _y _z}
  125.              -_f_o_r_w_a_r_d {_x _y _z} - sets the viewer's direction (VPN) to {_x _y _z}
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. GGGGLLLLXXXXAAAAUUUUXXXX((((3333TTTTkkkk))))                                                        GGGGLLLLXXXXAAAAUUUUXXXX((((3333TTTTkkkk))))
  137.  
  138.  
  139.  
  140.              -_u_p {_x _y _z} - sets the viewer's up vector (VUV) to {_x _y _z}
  141.              -_t_a_r_g_e_t {_x _y _z} - fixes the viewer's gaze upon {_x _y _z},
  142.              regardless of any change in position.  Setting the -forward value
  143.              cancels _t_a_r_g_e_t _m_o_d_e.
  144.  
  145.  
  146.  
  147. PPPPEEEERRRRFFFFOOOORRRRMMMMAAAANNNNCCCCEEEE
  148.      These bindings are slow.  For tasks that only occur occasionally, like
  149.      clearing the screen or changing the viewpoint, there should be no
  150.      noticable slowdown.  However, for tasks that occur often, like sending a
  151.      vertex to the graphics pipeline, the slowdown is quite noticable.  You
  152.      should really be doing that kind of stuff in C, but it you insist on
  153.      using Tcl, use GL objects to encapsulate large collections of primitives.
  154.      See the _p_y_r_a_m_i_d_W_o_r_l_d demo program for an example of this.
  155.  
  156.  
  157. CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS NNNNOOOOTTTT SSSSUUUUPPPPPPPPOOOORRRRTTTTEEEEDDDD
  158.      GL 4.0 contains many features for backward compatibility with older
  159.      versions.  Many such commands don't make sense with you're using X.
  160.      Particularly, the GL font mechanisms and event mechanisms are no longer
  161.      used.  Likewise, there's no need to use GL menus, since you're using
  162.      _G_L_X_A_u_x with Tcl/Tk, which provides its own menus.  Object editing isn't
  163.      supported in _G_L_X_A_u_x since it isn't supported in OpenGL, which would make
  164.      porting _G_L_X_A_u_x difficult.
  165.  
  166.      Some features, such as lighting, materials, NURBS, picking, fogvertex,
  167.      feedback, and texture-map/image handing, should appear in a later
  168.      release, with a higher-level Tk-style object oriented interface, where
  169.      appropriate.  The _G_L_X_A_u_x 1.0 release is intended to get the work already
  170.      accomplished out on the net for people to use today.
  171.  
  172.      Remember, if you need to be using some of these features, you can always
  173.      write your code in C.
  174.  
  175.  
  176. SSSSUUUUPPPPPPPPOOOORRRRTTTTEEEEDDDD CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS
  177.      Note: the _s_u_b_p_i_x_w_i_n_d_o_w and _s_u_b_p_i_x_p_e_r_s_p_e_c_t_i_v_e calls aren't properly GL
  178.      calls but rather can be found in the Graphics Library Programming Guide,
  179.      v2.0, pages 15-39.  These are useful for accumulation-buffer-based anti-
  180.      aliasing.
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.                                                                         PPPPaaaaggggeeee 3333
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.